#include<stdio.h>
#include<stdlib.h>
#include<unistd.h>
int main()
{
    pid_t id = fork();
                      
    //记录一下，这是我加上注释的第5遍代码了，我现在已经快死了，到底是谁在使用vim，远程总是掉不说，
    //有时候根本就保存不上，恶心的要死，每次都这个私人样子，
    //
    //我们上个文件我们讲解了父进程创建子进程，这个文件我们继续来讲解
    //我们说我们的父进程创建子进程是为了完成父进程交给我们的任务，我们的父进程为了完成某一个任务，我们创建一个
    //子进程去完成它，
    //当我们的子进程完成了我们的任务以后，我们是不是要知道我们的子进程把这个任务完成的怎么样，
    //所以我们的子进程是需要被我们的父进程回收掉的。
    //当我们的子进程执行完他的任务以后，这时候他的代码和数据就会被回收掉，这时候他就剩下一部分他的pcb
    //他的pcb里面就保存着子进程完成任务的程度，子进程执行完任务以后等待回收的过程，这叫做僵尸进程
    //我们今天还要讲一个新东西，
    //
    //我们看下面的代码，我们的父进程会执行1秒的代码，
    //但是我们的子进程会执行5秒的代码
    //这时候就出现问题了，因为我们的子进程是需要被我们的父进程回收掉的，这时候但是我们的父进程被提前结束了
    //这时候就出现问题了，本来是我们的父进程来回收我们的子进程，
    //但是我们的父进程没有了，这时候我们的子进程出来以后没有发现我们的父进程，他就会一直保持僵尸状态。
    //这时候这个进程我们就称它为孤儿进程。
    //这时候我们的孤儿进程还是要进行回收的，因为我们的子进程的pcb还在，pcb如果不进行回收的话，那势必会导致
    //内存泄漏，
    //所以我们的子进程的pcb是一定要进行回收的，这时候我们的子进程就需要我们的系统进程来进行收养回收。
    if(id == 0)
    {
        int cnt = 5;
        while(cnt)
        {
            printf(",pid:%d,ppid,%d\n",getpid(),getppid());
            cnt--;
            sleep(1);
        }
        exit(0);
    }
    else if(id > 0)
    {
        //
           sleep(1); 
    
    }



    return 0;
}

